package com.bsh.utils.system.smsApi;

import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import com.bsh.utils.KeyValuePair;

/**
 * 触发sms调用xml结果解析
 * 
 * @author gsh
 *
 */
public class CfSmsXmlResultParser {
	static Map<String,String> map=new HashMap<String,String>();
	static{
		map.put("-1", "应用程序异常"); 
		map.put("-3", "用户名密码错误或者用户无效");  
		map.put("-4", "短信内容和备案的模板不一样");  
		map.put("-5", "签名不正确(格式为:XXX【签名内容】), 注意：短信内容最后一个字符必须是】");  
		map.put("-7", "余额不足");  
		map.put("-8", "通道错误");  
		map.put("-9", "无效号码");  
		map.put("-10", "签名内容不符合长度");  
		map.put("-11", "用户有效期过期");  
		map.put("-12", "黑名单");  
		map.put("-13", "语音验证码的Amount参数必须是整形字符串");  
		map.put("-14", "语音验证码的内容只能为数字");  
		map.put("-15", "语音验证码的内容最长为6位");  
		map.put("-16", "余额请求过于频繁，5秒才能取余额一次");  
		map.put("-17", "非法IP");  
		map.put("-18", "Msg格式错误");  
		map.put("-19", "短信数量错误，小于1或者大于50");  
		map.put("-20", "号码错误或者黑名单");  
		map.put("-21", "没有找到对应的SubmitID设置");  
		map.put("-23", "解密失败");
	}
	
	public static KeyValuePair<String,String> parse(String smsXml) {
		KeyValuePair<String,String> res=new KeyValuePair<String,String>();
        StringReader reader=new StringReader(smsXml);
        try {
			Document doc= new SAXReader().read(reader);
			Node node = doc.selectSingleNode("/string");
			String key=node.getText();
			if(map.containsKey(key)){
				res.setKey(key);
				res.setValue(map.get(key));
			}else if(key!=null){
				if(key.length()>5){
					res.setKey("0");
					res.setValue("调用成功！业务号："+key);
				}
			}else{
				res.setKey("-1");
				res.setValue(map.get("-1"));	
			}
		} catch (DocumentException e) {			
			e.printStackTrace();
			res.setKey("-1");
			res.setValue(map.get("-1"));
		}
        
		return res;
	}

	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
		sb.append("<string xmlns=\"http://tempuri.org/\">-1</string>");
		KeyValuePair<String,String> val = parse(sb.toString());
		System.out.println(val.getValue());
	}
	
	
	


	

}
